home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Info 1994 March
/
Internet Info CD-ROM (Walnut Creek) (March 1994).iso
/
networking
/
mail
/
mh
/
contrib
/
jpeek
/
nx
< prev
next >
Wrap
Text File
|
1992-08-08
|
3KB
|
104 lines
#! /bin/sh
# $Header: /home/jerry/.bin/RCS/nx,v 1.8 92/08/09 23:26:34 jerry mh_contrib $
### nx - remove current message after 1 minute; show next message now
### Usage: nx [-noverbose]
### mrm - remove current message after 1 minute
### Usage: mrm [-noverbose]
##
## IF YOU HAVE MH SET TO annoTATE A MESSAGE THAT YOU'RE REPLYING TO
## OR FORWARDING, AND YOU DO SOMETHING LIKE THIS:
## % repl
## ...do the reply...
## What now? push
## % rmm
## % next
## YOU CAN GET ERROR MESSAGES FROM THE BACKGROUND LIKE:
## Unable to rename 56 to ,56; continuing...
## OR WORSE.
##
## mrm AND nx WORK AROUND THIS PROBLEM BY KEEPING TRACK OF THE CURRENT
## MESSAGE NUMBER AND FOLDER -- IT STARTS A BACKGROUND JOB THAT DELETES
## THE MESSAGE AFTER A SET TIME (NOW, IT'S 60 SECONDS).
## nx ALSO DOES THE MH next COMMAND TO SHOW THE NEXT MESSAGE -- GOOD
## WHEN YOU'RE READING NEW MAIL MESSAGES.
##
## TO KEEP FROM MESSING UP THE CURRENT CONTEXT WHEN IT REMOVES THE
## MESSAGE, mrm & nx MAKE A NEW MH CONTEXT FILE IN /tmp BEFORE
## DROPPING ITSELF INTO THE BACKGROUND. THIS MEANS THAT mrm & nx CAN
## "REMEMBER" THE CURRENT FOLDER (IN THE NEW
## context FILE) AND REMOVE THE OLD MESSAGE ANY TIME THEY WANT,
## WITHOUT AFFECTING THE MH SYSTEM RUNNING UNDER THE REAL $HOME.
#
# TO INSTALL, PUT IN A FILE NAMED nx AND LINK mrm TO THAT FILE:
# % ln nx mrm
#
# NOTE TO HACKERS: TABSTOPS IN THIS CODE ARE SET AT 4.
#
# USE AT YOUR OWN RISK. SEEMS TO WORK, BUT IT'S YOUR RESPONSIBILITY!
# PLEASE TELL ME ABOUT BUGS AND FIXES: Jerry Peek, jerry@ora.com
mh=/usr/local/mh
stime=60 # HOW LONG TO WAIT BEFORE REMOVING MESSAGE
case "$0" in
*mrm) ;;
*nx) shownext=yep ;;
*) echo "$0: Help! I don't know how to run myself!?!" 1>&2
exit 1
;;
esac
case "$1" in
-n*) shutup=yes ;;
"") ;;
*) echo "Usage: `basename $0` [-n(overbose)]" 1>&2 ; exit 1 ;;
esac
msgpath="`$mh/mhpath cur`"
if test $? -ne 0 -o \( ! -f $msgpath \)
then
echo "`basename $0`: can't find message to remove." 1>&2
exit 1
fi
case "$shutup" in
"") echo "Removing $msgpath in background..." 1>&2 ;;
esac
# FOR FASTER RESPONSE, DO AS MUCH WORK AS WE CAN IN THE BACKGROUND...
(temp=/tmp/NX.err$$
exec 1> $temp 2>&1 # THROW ALL OUTPUT INTO $temp
# DO THIS IN A LONG CHAIN OF ifS SO WE ALWAYS LEAVE IF SOMETHING BOMBS.
# (I TRIED A trap, BUT THE SUB-SHELL exit DIDN'T SPRING IT.)
# PUT FOLDER NAME IN $folder AND MESSAGE NUMBER IN $msg:
eval `echo $msgpath | sed 's@^\(.*\)/\([1-9][0-9]*\)@folder=\1 msg=\2@'`
# IF THAT WORKED, NOW SET OUR TEMPORARY CURRENT FOLDER & MESSAGE
# NUMBER.
if [ ! -d "$folder" -o ! -f "$folder/$msg" ]
then
# BARF ERROR INTO MAIL MESSAGE AND QUIT:
echo "Quitting early: bad directory '$folder'
and/or file '$msg'
in $msgpath."
else
# MAKE TEMPORARY CONTEXT FILE:
ctx=/tmp/NX$$
echo "Current-Folder: $folder" >$ctx || exit 1
sleep $stime
MHCONTEXT=$ctx $mh/rmm $msg
fi
# IF $temp HAS ANYTHING IN IT, MAIL THE ERROR (UNDER 4.3BSD, WE CAN'T
# JUST WRITE TO SCREEN; ANYWAY, USER MIGHT HAVE LOGGED OFF):
test -s $temp && $mh/mhmail $USER -s "$0 ERROR rmm-ing $msgpath" <$temp
/bin/rm -f $temp $ctx
exit
) &
case "$shownext" in
yep) $mh/next ;;
esac